NSObject的底层实现:
Objective-C中的对象,简称OC对象,主要可以分为3种
instance对象(实例对象)
class对象(类对象)
meta-class对象(元类对象)
isa指针:
instance的isa指向class
当调用对象方法时,通过instance的isa找到class,最后找到对象方法的实现进行调用class的isa指向meta-class
当调用类方法时,通过class的isa找到meta-class,最后找到类方法的实现进行调用class对象的superclass指针:
- 当Student的instance对象要调用Person的对象方法时,会先通过isa找到Student的class,然后通过superclass找到Person的class,最后找到对象方法的实现进行调用
isa、superclass总结:
instance的isa指向class
class的isa指向meta-class
meta-class的isa指向基类的meta-class
class的superclass指向父类的class
如果没有父类,superclass指针为nilmeta-class的superclass指向父类的meta-class
基类的meta-class的superclass指向基类的classinstance调用对象方法的轨迹
isa找到class,方法不存在,就通过superclass找父类class调用类方法的轨迹
isa找meta-class,方法不存在,就通过superclass找父类